const { studentsModel } = require("../models/studentsModel");
const jwt = require("jsonwebtoken");
// 登录
module.exports.login = async function (req, res, next) {
    // 接受前端发送的数据
    const data = req.body;
    // console.log('登录信息', data);
    const result = await studentsModel.find({ phone: data.phone, password: data.password });
    // console.log(result);
    if (result.length > 0) {
        const token = jwt.sign({ _id: result[0]._id }, // 保存的用户信息（必须是对象）
            'hello', // 密钥，任意字符串
            { expiresIn: '99h' } // token 有效期，纯数字单位默认为 s
        )
        res.send({
            message: "登录成功",
            code: 1,
            token: 'Bearer ' + token,
            result
        });
    } else {
        res.send({
            message: "登录失败",
            code: 0
        });
    }
    // 返回数据给前端

}

/*通过 token 获取用户信息*/
module.exports.getUserInfo = async function (req, res) {
    // 1. 获取请求头中的 token 字符串
    const tokenBearer = req.get('Authorization');
    // console.log('token字符串' + tokenBearer);
    // 2. 判断是否成功获取到 token 字符串
    if (tokenBearer) {
        // 3. 将 token 字符串进行拆分,去掉 Bearer 字符串
        const token = tokenBearer.split(' ')[1];
        // 4. 解码 token：拿到 token 中保存的用户信息
        const { _id } = jwt.verify(token, 'hello');
        // 5. 判断 token 中是否有 _id
        if (_id) {
            // 6. 通过 _id 查询数据库中的用户信息
            const result = await studentsModel.find({ _id });
            res.send({
                code: 1,
                message: '用户信息获取成功',
                result: result[0]
            });
            return;
        }
    }
    // 7. 如果以上判断没有进入 if,则返回失败信息给前端
    res.send({
        code: 0,
        message: '用户信息获取失败'
    })
}
module.exports.register = async function (req, res, next) {
    // 接受前端发送的数据
    const data = req.body;
    const { phone, name = "未知", gender = "未知", avatar = "#", password } = data
    console.log('注册数据', data);
    const result = await studentsModel.find({ phone: data.phone })
    console.log(result);
    if (result.length > 0) {
        res.send({
            message: "账号已存在,注册失败",
            code: 0
        });
    } else {
        const result = await studentsModel.create(data);
        if (result) {
            res.send({
                message: "注册成功",
                code: 1
            });
        } else {
            res.send({
                message: "注册失败",
                code: 0
            });
        }
    }
    // 返回数据给前端

}


// 修改资料

// 修改学生
module.exports.changeStudent = async function (req, res, next) {
    const data = req.body
    console.log(data);
    const result = await studentsModel.updateOne({ _id: data._id }, {
        name: data.name,
        gender: data.gender,
        avatar: data.avatar
    })
    console.log(result);
    if (result) {
        res.send({
            message: "成功找到需要修改的数据",
            result,
            code: 1
        })
    }
}




